This notebook addresses the case where there is one simple zero over each of the four $2$-torsion points, and the two remaining simple zeros occur over one of the $2$-torsion points corresponding to $\{(0,0), (1,0)\}$ and the double zero occurs over one of the points in $\{(0,1), (1,1)\}$.
We recall that in $\mathcal{H}(2,1^6)$, $d_{opt} = 36$ and by the arrangement above, there is a $2$-torsion point in the boundary of each horizontal cylinder that has exactly one simple zero above it.
This case is representative of all other cases and NOT like the other case in this stratum. Due to the smaller file sizes, it is possible to perform the analysis piecemeal and store all intermediate data. We will not emphasize this point in any other stratum.
import re
from multiprocessing import Pool
#These are the 1-Cylinder diagram lists from the strata H(1,1,1,1) and H(2,1,1)
#We copied them here rather than calling them from an external file
H1t4_cyl_diags = [[[[0,3,7,4,1,2,6,5],[0,3,6,4,1,2,7,5]]], [[[0,7,2,1,6,4,5,3],[0,6,7,5,2,1,4,3]]],
[[[0,7,5,1,3,2,4,6],[0,1,4,7,3,6,5,2]]], [[[0,7,5,2,3,4,6,1],[0,2,4,7,6,5,3,1]]]]
H2_1_1_cyl_diags = [[[[0, 2, 1, 6, 4, 5, 3], [0, 6, 5, 2, 1, 4, 3]]],
[[[0, 2, 5, 1, 3, 6, 4], [0, 2, 6, 5, 1, 3, 4]]],
[[[0, 2, 5, 3, 1, 6, 4], [0, 2, 6, 3, 1, 5, 4]]],
[[[0, 6, 2, 3, 4, 5, 1], [0, 2, 4, 6, 5, 3, 1]]],
[[[0, 6, 4, 1, 2, 3, 5], [0, 1, 3, 6, 5, 4, 2]]]]
#This loads all of the functions for processing cylinder diagrams
%run ./ST5_fcns/cyl_diag_fcns.ipynb
H2_1_1_vertex_data = strat_odd_sc(H2_1_1_cyl_diags)
H1t4_vertex_data = strat_odd_sc(H1t4_cyl_diags)
We recall that in the strata $\mathcal{H}(2,1,1)$ and $\mathcal{H}(1^4)$, there are exactly $7$ and $8$ horizontal saddle connections, respectively. Therefore, we consider partitions of $72$ into $7$ and $8$ positive integers.
Among partitions of $72$ into $7$ numbers the minimum of the maximum numbers among all partitions is given by $\lceil 2d_{opt}/7 \rceil = 11$.
Among partitions of $72$ into $8$ numbers the minimum of the maximum numbers among all partitions is given by $\lceil 2d_{opt}/8 \rceil= 10$.
Solving $72 - 2(10) - 2t_0 \geq 0$ implies that the largest value of $t_0$ is $26$.
Solving $72 - 2s_0 - 2(11) \geq 0$ implies that the largest value of $s_0$ is $25$.
In summary:
$$\mathcal{H}(1^4): 10 \leq s_0 \leq 25$$
$$\mathcal{H}(2,1,1): 11 \leq t_0 \leq 26$$
#This loads all of the standard partition functions needed for nearly every case
#This includes the partition evaluate function
%run ./ST5_fcns/partition_functions.ipynb
if False:
create_sc_partition_file(t_tuple_begin = (), part_length = 7, t0_range = range(11,27), d_opt = 36,
filename_root = 'ST5_data//H_2_1t6//2_branch_point//partitions//H2_1_1_part')
if False:
create_sc_partition_file(t_tuple_begin = (), part_length = 8, t0_range = range(10,26), d_opt = 36,
filename_root = 'ST5_data//H_2_1t6//2_branch_point//partitions//H1t4_part')
#Load the partitions
if False:
with open('ST5_data//H_2_1t6//2_branch_point//partitions//H1t4_part', 'r') as file:
H1t4_part = eval_part(file.read())
if False:
with open('ST5_data//H_2_1t6//2_branch_point//partitions//H2_1_1_part', 'r') as file:
H2_1_1_part = eval_part(file.read())
#This loads all of the align_list functions needed for nearly every case
#This includes the align_list evaluate function
%run ./ST5_fcns/align_list_fcns.ipynb
if False:
for s in range(11,27):
align_list_write_file(H2_1_1_part, H2_1_1_vertex_data,
'ST5_data//H_2_1t6//2_branch_point//align_list//H2_1_1_align_list',
t0 = s)
if False:
for t in range(10,26):
align_list_write_file(H1t4_part, H1t4_vertex_data,
'ST5_data//H_2_1t6//2_branch_point//align_list//H1t4_align_list',
t0 = t)
#This loads all of the visible_align_list functions needed for nearly every case
%run ./ST5_fcns/align_list_visible_fcns.ipynb
if False:
generate_all_align_list_visible_files(range(11,27), range(10,26), 36,
'ST5_data//H_2_1t6//2_branch_point//',
'align_list//H1t4_align_list_',
'align_list_visible//H1t4_align_list_')
if False:
generate_all_align_list_visible_files(range(10,26), range(11,27), 36,
'ST5_data//H_2_1t6//2_branch_point//',
'align_list//H2_1_1_align_list_', 'align_list_visible//H2_1_1_align_list_')
#Alternatively, this can be run with pool to take advantage of multiple processors
#Change this to True to print
print_pool_instructions(False)
def generate_align_list_visible_pool_s(item):
return generate_align_list_visible(item, 36, 'ST5_data//H_2_1t6//2_branch_point//',
'align_list//H1t4_align_list_',
'align_list_visible//H1t4_align_list_')
if False:
pool = Pool(processes=2)
pool.map(generate_align_list_visible_pool_s,
align_visible_to_make_list(range(11,27), range(10,26), 36,
'ST5_data//H_2_1t6//2_branch_point//align_list_visible//H1t4_align_list_'))
def generate_align_list_visible_pool_t(item):
return generate_align_list_visible(item, 36, 'ST5_data//H_2_1t6//2_branch_point//',
'align_list//H2_1_1_align_list_',
'align_list_visible//H2_1_1_align_list_')
if False:
pool = Pool(processes=12)
pool.map(generate_align_list_visible_pool_t,
align_visible_to_make_list(range(10,26), range(11,27), 36,
'ST5_data//H_2_1t6//2_branch_point//align_list_visible//H2_1_1_align_list_'))
#At this point, none of the files above need to be loaded for this to run.
#Once the files above are generated, the file sizes are small enough that these can be loaded on the fly.
#This loads all of the visible_align_list functions needed for nearly every case
%run ./ST5_fcns/combine_align_list_visible_fcns.ipynb
if False:
combine_align_list_visible_write_file(s_range = range(11,27),
s_filename_root = 'align_list_visible//H2_1_1_align_list_',
t_range = range(10,26),
t_filename_root = 'align_list_visible//H1t4_align_list_',
d_opt = 36,
root_dir = 'ST5_data//H_2_1t6//2_branch_point//')
#This loads all of the vertical permutation check functions needed for nearly every case
#This function can be run once admissible_list is written and without needing to load any other file
%run ./ST5_fcns/vert_perm_check_fcns.ipynb
#The following line checks that one of the vertical permutations has the correct length of 2*d_opt
if True:
vert_perm_check_file(36, 'ST5_data//H_2_1t6//2_branch_point//')
#This checks that all (both) of the vertical permutations have the correct length of 2*d_opt
if True:
all_vert_perm_check_file(36, 'ST5_data//H_2_1t6//2_branch_point//')
%run ./ST5_fcns/slope_test_fcn.ipynb
if True:
final_list = slope_test(36, 'ST5_data//H_2_1t6//2_branch_point//')